#! /usr/bin/env python
# coding=utf-8
# 对fasta文件调整 顺序 用于将 outgroup 的排在前面 这样就可以做有outgroup的无根树

from Bio import SeqIO
import sys
import argparse


parser = argparse.ArgumentParser(
    description='''对fasta文件调整 顺序 用于将 outgroup 的排在前面 这样就可以做有outgroup的无根树
    用法:
    adjust_order_outgroup.py -i super_matrix.fa -o super_matrix_ordered.fa -o Eda,Lfu
    由大天才于2021年7月27日创建于浙江农业大学''')

parser.add_argument('-i',
                help='必须给定，超矩阵')


parser.add_argument('-o',
                help='必须给定，输出文件的路径')

parser.add_argument('-O',
                help='外群名')



args = parser.parse_args()

if not args.i or not args.o:
    parser.print_help()
    sys.exit()




infile = args.i

outfile  = args.o



if not args.O:
	outgroup = []
else:
	outgroup = [i.strip() for i in args.O.strip('" ,').split(',')]



print("outgroup 为:")
print(outgroup)



first_list = []

other_list = []

for i in SeqIO.parse(infile,'fasta'):
	if i.name in outgroup:
		first_list.append(i)
	else:
		other_list.append(i)


out = open(outfile,'w')

for i in first_list:
	out.write('>'+str(i.name)+'\n')
	out.write(str(i.seq)+'\n')



for i in other_list:
	out.write('>'+str(i.name)+'\n')
	out.write(str(i.seq)+'\n')

out.close()